package MODELO;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;


import MODELO.ModeloIngrediente;

public class ModeloIngrediente extends Conexion {
	private String  codigo;
    private String descripcion;
    private String  status;
    private double stock;
	
	
	public ModeloIngrediente() {
		super();
	}
	
	 public boolean registar(){
	        getConexion();
	        boolean sw = false;
	        String tira="INSERT INTO Ingrediente (codigo, descripcion, stock, status) VALUES(?,?,?,?)";
	        try {
				PreparedStatement stam = generarPreparedStatement(tira);
	            stam.setString(1, getCodigo());
	            stam.setString(2, getDescripcion().toUpperCase());
	            stam.setDouble(3, getStock());
	            stam.setString(4, getStatus());
	            ejecutarPrepare(stam);
	            sw= true;
	        } catch (SQLException ex) {
	            Logger.getLogger(ModeloCategoria.class.getName()).log(Level.SEVERE, null, ex);
	        }
	        
	        
	        return sw;
	    }

	  public boolean actualizar(){
	     getConexion();
	     boolean sw = false;
	     String tira="UPDATE Ingrediente SET stock =? WHERE codigo=?  AND status = 'A'";
	     try {
	    		PreparedStatement stam = generarPreparedStatement(tira);
	            stam.setString(2, getCodigo());
	            stam.setDouble(1, getStock());
	            ejecutarPrepare(stam);
	            sw= true;
	     } catch (SQLException ex) {
	            Logger.getLogger(ModeloIngrediente.class.getName()).log(Level.SEVERE, null, ex);
	     }
	     
	     return sw;
	 }

	  public boolean  consultar(){
	    getConexion();
	    boolean sw = false;
	    String tira="SELECT * FROM Ingrediente WHERE codigo=? AND status='A'";
	    try {
	    	PreparedStatement stam = generarPreparedStatement(tira);
	    	stam.setString(1, getCodigo());
	        ResultSet rs= consultarPrepare(stam);
	        if (rs.next()){
	            sw = true;
	            setDescripcion(rs.getString("descripcion"));
	            setCodigo(rs.getString("codigo"));
	            setStatus(rs.getString("status"));
	            setStock(rs.getFloat("stock"));
	         }
	    } catch (SQLException ex) {
	        Logger.getLogger(ModeloIngrediente.class.getName()).log(Level.SEVERE, null, ex);
	    }
	    return sw;
	  }

	  public Vector<ModeloIngrediente> listar(){
	    Vector<ModeloIngrediente> v = new Vector<ModeloIngrediente>();
	    String tira="SELECT * FROM Ingrediente WHERE status='A'";
	    getConexion();
	    try {
	        ResultSet rs= consultar(tira);
	        while (rs.next()){
	        	ModeloIngrediente  i = new ModeloIngrediente();
	            i.setDescripcion(rs.getString("descripcion"));
	            i.setCodigo(rs.getString("codigo"));
	            i.setStatus(rs.getString("status"));
	            i.setStock(rs.getFloat("stock"));
	            v.add(i);
	         }
	    } catch (SQLException ex) {
	        Logger.getLogger(ModeloIngrediente.class.getName()).log(Level.SEVERE, null, ex);
	    }
	    
	    return v;
	  }


	  
	  public boolean revisarStock(double porcion){
	      consultar();
	      if((getStock()-porcion)>=0)
	          return true;
	      else
	          return false;
	  }

	  public void restarStock(){
	       getConexion();
	       String tira="UPDATE Ingrediente SET stock =? WHERE codigo=?  AND status = 'A'";
	       try {
	    	   PreparedStatement stam = generarPreparedStatement(tira);
	            stam.setString(2, getCodigo());
	            stam.setDouble(1, getStock());
	            ejecutarPrepare(stam);   
	       } catch (SQLException ex) {
	           Logger.getLogger(ModeloIngrediente.class.getName()).log(Level.SEVERE, null, ex);
	       }
	       
	  }

	public String getCodigo() {
		return codigo;
	}

	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public double getStock() {
		return stock;
	}

	public void setStock(double stock) {
		this.stock = stock;
	}
	  
	  

	
}
